﻿using System.Data;

namespace TurtleEngine.Databases
{
	 /// <summary>
	 ///
	 /// </summary>
	 internal interface ICommunicate
	 {
		  /// <summary>
		  /// Adds the column details.
		  /// </summary>
		  /// <param name="columnInfo">The column info.</param>
		  void AddColumnDetails(DataRow columnInfo);

		  /// <summary>
		  /// Adds the function details.
		  /// </summary>
		  /// <param name="functionInfo">The function info.</param>
		  void AddFunctionDetails(DataRow functionInfo);

		  /// <summary>
		  /// Adds the procedure details.
		  /// </summary>
		  /// <param name="procedureInfo">The procedure info.</param>
		  void AddProcedureDetails(DataRow procedureInfo);

		  /// <summary>
		  /// Adds the table details.
		  /// </summary>
		  /// <param name="tableInfo">The table info.</param>
		  void AddTableDetails(DataRow tableInfo);

		  /// <summary>
		  /// Adds the trigger details.
		  /// </summary>
		  /// <param name="triggerInfo">The trigger info.</param>
		  void AddTriggerDetails(DataRow triggerInfo);

		  /// <summary>
		  /// Adds the uddt details.
		  /// </summary>
		  /// <param name="uddtInfo">The uddt info.</param>
		  void AddUddtDetails(DataRow uddtInfo);

		  /// <summary>
		  /// Adds the view details.
		  /// </summary>
		  /// <param name="viewInfo">The view info.</param>
		  void AddViewDetails(DataRow viewInfo);

		  /// <summary>
		  /// Gets the column details.
		  /// </summary>
		  /// <param name="table">The table.</param>
		  /// <param name="column">The column.</param>
		  /// <returns></returns>
		  DataRow GetColumnDetails(string table, string column);

		  /// <summary>
		  /// Gets a list of all the functions in the database
		  /// </summary>
		  /// <returns>Datatable of functions in database</returns>
		  DataTable GetFunctions();

		  /// <summary>
		  /// Gets the index details.
		  /// </summary>
		  /// <param name="index">The procedure.</param>
		  /// <returns></returns>
		  DataRow GetIndexDetails(string index);

		  /// <summary>
		  /// Gets a list of all the indexes in the database
		  /// </summary>
		  /// <returns>Datatable of the indexes in database</returns>
		  DataTable GetIndexes();

		  /// <summary>
		  /// Gets the procedure details.
		  /// </summary>
		  /// <param name="procedure">The procedure.</param>
		  /// <returns></returns>
		  DataRow GetProcedureDetails(string procedure);

		  /// <summary>
		  /// Gets a list of all the stored procedures in the database
		  /// </summary>
		  /// <returns>Datatable of the stored procedures in database</returns>
		  DataTable GetProcedures();

		  /// <summary>
		  /// Gets the table column details.
		  /// </summary>
		  /// <param name="table">The table.</param>
		  /// <returns></returns>
		  DataTable GetTableColumnDetails(string table);

		  /// <summary>
		  /// Gets the table details.
		  /// </summary>
		  /// <param name="table">The table.</param>
		  /// <returns></returns>
		  DataRow GetTableDetails(string table);

		  /// <summary>
		  /// Gets a list of all the tables in the database
		  /// </summary>
		  /// <returns>Datatable of tables in database</returns>
		  DataTable GetTables();

		  /// <summary>
		  /// Gets the trigger details.
		  /// </summary>
		  /// <param name="view">The view.</param>
		  /// <returns></returns>
		  DataRow GetTriggerDetails(string view);

		  /// <summary>
		  /// Gets a list of all the triggers in the database
		  /// </summary>
		  /// <returns>Datatable of triggers in database</returns>
		  DataTable GetTriggers();

		  /// <summary>
		  /// Gets the uddt details.
		  /// </summary>
		  /// <param name="view">The view.</param>
		  /// <returns></returns>
		  DataRow GetUddtDetails(string view);

		  /// <summary>
		  /// Gets a list of all the user-defined data types in the database
		  /// </summary>
		  /// <returns>Datatable of user-defined data types in database</returns>
		  DataTable GetUddts();

		  /// <summary>
		  /// Gets the view details.
		  /// </summary>
		  /// <param name="view">The view.</param>
		  /// <returns></returns>
		  DataRow GetViewDetails(string view);

		  /// <summary>
		  /// Gets a list of all the views in the database
		  /// </summary>
		  /// <returns>Datatable of views in database</returns>
		  DataTable GetViews();
	 }
}